#ifndef DATABASE_H
#define DATABASE_H

#include <string>
#include <iostream>
#include "sqlite3.h"
#include <stdexcept>

// 扩展Database类，添加地理数据表支持
class Database {
private:
    sqlite3* db;

public:
    Database();
    Database(const std::string& dbPath);
    ~Database();

    // 打开数据库连接
    bool open(const std::string& dbPath);
    
    // 用户相关方法
    bool registerUser(const std::string& username, const std::string& password);
    int loginUser(const std::string& username, const std::string& password);
    bool userExists(const std::string& username);
    
    // 获取数据库连接指针（供其他数据库操作类使用）
    sqlite3* getConnection() const { return db; }
    
    // 执行通用SQL语句
    bool executeSQL(const std::string& sql);
    
    // 初始化地理数据表
    bool initGeographicTables();
    
    // 初始化diary相关表
    void initializeDatabase();

    // 获取数据库连接
    sqlite3* get() const { return db; }
};

#endif // DATABASE_H 